<?php

require_once './library/Row.php';
require_once './application/models/Tables/Utilisateurs.php';
require_once './application/models/Tables/Droits.php';
require_once './application/models/Tables/ConfigNetwork.php';

class ObjectUtilisateur //extends AdnLibraryRow
{

    protected $_lstUser;
    protected $_user;
    protected $_userNetwork;
    protected $_idUser;
    protected $_pCulture;
    private $_tbUser;
    private $_tbDroit;
    private $_lstDroit;
    private $_droit;
    private $_descDroit;
    private $_tbNetwork;
    private $_session;
    private $_idNetwork;

    public function __construct()
    {
        $this->_session = new Zend_Session_Namespace('session');
    }

    // // Retourne l'IdUser s'il existe
    public function authentification($pNom, $pMdp)
    {
        $this->_tbUser = new TableUtilisateurs();
        $this->_user = $this->_tbUser->getUserSession($pNom, $pMdp);
        if (!empty($this->_user))
            return array("idUser" => $this->_user[0]['IdUtilisateur'], "idDroit" => $this->_user[0]['IdDroit'], 'Langue' => $this->_user[0]['Langue']);
        return false;
    }

    // Retourne l'enssemble des information de l'utilisateur
    public function infoUtilisateur($pNom, $pMdp)
    {
        $this->chargeUser($pNom, $pMdp);

        if ($this->_user != false)
        {
            return $this->_user;
        }
    }

    // R�cupere toutes les info de tous les user dans la table Utilisateurs
    public function listeUtilisateurs()
    {
        $this->chargeLstUsers();
        if ($this->_lstUser != false)
        {
            foreach ($this->_lstUser as $user)
            {
                $listItem[] = $user['NomUtilisateur'];
            }
            return $listItem;
        }
    }

    // R�cupere la liste des droit disponible
    public function listeDroits()
    {
        $this->_tbDroit = new TableDroits();
        $this->_lstDroit = $this->_tbDroit->getLstDroit();
        $this->_droit['description'] = '';
        if ($this->_lstDroit != false)
        {
            foreach ($this->_lstDroit as $item)
            {
                $this->_droit['description'] .= $item['Description'] . ";";
            }
            return $this->_droit;
        }
        return false;
    }

    public function infoDroit($pdescDroit)
    {
        $this->_tbDroit = new TableDroits();
        $this->_descDroit = $this->_tbDroit->getDescriptionDroit($pdescDroit);
        return $this->_descDroit[0]['Compo'];
    }

    public function infoDroitUtilisateur($idDroit)
    {
        $this->_tbDroit = new TableDroits();
        $this->_descDroit = $this->_tbDroit->getDroit($idDroit);
        return $this->_descDroit;
    }

    // Retourne les comptes r�seaux
    public function InfoConfigNetwork($pId)
    {
        $tbUserNetwork = new TableConfigNetwork();
        $this->_userNetwork = $tbUserNetwork->getConfigNetwork($pId);
        return $this->_userNetwork;
    }

    public function ajoutComptesReseaux($name, $login, $pass)
    {
        $this->_tbNetwork = new TableConfigNetwork();
        $this->_idNetwork = $this->_tbNetwork->getConfigNetworkName($name);
        if ($this->_idNetwork == false)
        {
            $this->_tbNetwork->addConfigNetwork($this->_session->idClient, $name, $login, $pass);
            return true;
        } else
        {
            $this->_idNetwork = $this->_tbNetwork->getConfigNetworkId($this->_idNetwork[0]['IdNetwork']);
            if ($this->_idNetwork[0]['IdUser'] != $this->_session->idClient)
            {
                $this->_tbNetwork->addConfigNetwork($this->_session->idClient, $name, $login, $pass);
                return true;
            } else
            {
                $this->_tbNetwork->updateConfigNetwork($name, $login, $pass);
                return true;
            }
        }
        return false;
    }

    public function supprimeCompteReseaux($name)
    {
        $this->_tbNetwork = new TableConfigNetwork();
        $this->_idNetwork = $this->_tbNetwork->getConfigNetworkName($name);
        $this->_tbNetwork->deleteConfigNetwork($this->_session->idClient, $this->_idNetwork[0]['IdNetwork']);
    }

    public function listeComptesReseaux()
    {
        $this->_tbNetwork = new TableConfigNetwork();
        $lstNetwork = $this->_tbNetwork->getConfigNetwork($this->_session->idClient);
        if ($lstNetwork != false)
            return $lstNetwork;
        return false;
    }

    // Charge la variable $_lstUser
    public function chargeLstUsers()
    {
        $this->_tbUser = new TableUtilisateurs();
        $this->_lstUser = $this->_tbUser->getLstUser();
    }

    public function chargeUser($pNom)
    {
        $this->_tbUser = new TableUtilisateurs();
        $this->_user = $this->_tbUser->getUser($pNom);
        return $this->_user;
    }

    public function chargeIdUser($pId)
    {
        $this->_tbUser = new TableUtilisateurs();
        $this->_user = $this->_tbUser->getIdUser($pId);
    }

    // Crée un utilisateur en table
    public function ajoutUtilisateur($pName, $pPwd, $pMail, $pDroit, $pLangue, $pDescDroit = null)
    {
        $this->_tbUser = new TableUtilisateurs();
        if ($pDroit == '1')
            $this->idUser = $this->_tbUser->newUser($pName, $pPwd, $pDroit, $pMail, $pLangue);
        else
        {
            $this->_tbDroit = new TableDroits();
            $this->_droit = $this->_tbDroit->getDescriptionDroit($pDroit);
            if (!$this->_droit)
            {
                $pDescDroit .= "logout;";
                $this->_droit = $this->_tbDroit->createDroit($pDescDroit, $pDroit);
                $this->idUser = $this->_tbUser->newUser($pName, $pPwd, $this->_droit, $pMail, $pLangue);
            }
            else
                $this->idUser = $this->_tbUser->newUser($pName, $pPwd, $this->_droit[0]['IdDroit'], $pMail, $pLangue);
        }
        return $this->idUser;
    }

    public function supprimerUtilisateur($pName)
    {
        $this->_tbUser = new TableUtilisateurs();
        $this->_tbUser->delUser($pName);
    }

    // Mise a jour d'un utilisateur
    public function modifUtilisateur($pId, $pName, $pPwd, $pMail, $pDroit, $pLangue, $pDescDroit = null)
    {
        $this->_tbUser = new TableUtilisateurs();
        if ($pDroit == '1')
            $this->_tbUser->updateUser($pId, $pName, $pPwd, $pMail, $pDroit, $pLangue);
        else
        {
            $pDescDroit .= "logout;";
            $this->_tbDroit = new TableDroits();
            $this->_droit = $this->_tbDroit->getDescriptionDroit($pDroit);
            if (!$this->_droit)
            {
                $this->_droit = $this->_tbDroit->createDroit($pDescDroit, $pDroit);
                $this->_tbUser->updateUser($pId, $pName, $pPwd, $pMail, $this->_droit, $pLangue);
            } else
            {
                $this->_tbDroit->updateDroit($pDescDroit, $pDroit);
                $this->_tbUser->updateUser($pId, $pName, $pPwd, $pMail, $this->_droit[0]['IdDroit'], $pLangue);
            }
        }
    }

    public function delDroit($pDescDroit)
    {
        $this->_tbDroit = new TableDroits();
        $this->_tbDroit->delDroit($pDescDroit);
    }

}

?>